package sv.gob.mh.dgii.security;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;


public class SiitAuthenticationServiceImpl implements
		SiitRemoteAuthenticationService {

	@Autowired
	private AuthenticationManager authenticationManager;
	
	public Authentication validateUser(String username, String password){
		
		UsernamePasswordAuthenticationToken solicitud = new UsernamePasswordAuthenticationToken(username, password);
		Authentication resultado = authenticationManager.authenticate(solicitud);
		
		return resultado;
	}
	
	/*
	 * Este m�todo es usado exclusivamenlte en la pantalla auxiliar de autenticaci�n 
	 * en M�dulo RUC.
	 * Este proceso es una especializaci�n, no se pretende completar un ciclo completo 
	 * de autenticaci�n-autorizaci�n. S�lamente se maneja la nullabilidad de objeto de
	 * respuesta en el flujo de negocios.
	 * NO ES USADO EN EL PROCESO DE LOGIN A LA APLICACI�N.
	 * (El login de usuario es procesado por spring-security)
	 */
	public DGIIUserDetailsImpl getLdapDetails(String username, String password) {
		DGIIUserDetailsImpl userDetails = null;
		
			Authentication aut = validateUser(username, password);
			if(aut!=null){
				userDetails = (DGIIUserDetailsImpl)aut.getPrincipal();
			}
		
		return userDetails;
	}
	
}
